package org.itstack.state;

/**
 * 具体状态A
 * 实现状态A的具体行为
 * 
 * 设计原则：
 * - 单一职责：只负责状态A的行为
 * - 里氏替换：可以替换抽象状态
 */
public class ConcreteStateA implements State {
    
    @Override
    public String getStateName() {
        return "状态A";
    }
    
    @Override
    public void handle(Context context, String action) {
        switch (action) {
            case "action1":
                System.out.println("状态A处理action1，转换到状态B");
                context.setState(new ConcreteStateB());
                break;
            case "action2":
                System.out.println("状态A处理action2，保持当前状态");
                break;
            case "action3":
                System.out.println("状态A处理action3，转换到状态C");
                context.setState(new ConcreteStateC());
                break;
            default:
                System.out.println("状态A无法处理动作：" + action);
        }
    }
}
